home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / pascal / tphers01.zip / HMP2HFN.PL < prev    next >
Text File  |  1991-09-08  |  1KB  |  51 lines

  1. ############################################################################
  2. #  Reads one or more hmp files and one or more oc or hfp files and 
  3. #  constructs a hfp file of the characters from the characters
  4. #  listed in the hmp files.
  5. #
  6. #  The hmp files are regognized by their extensions. All other files
  7. #  are assumed to be font files.
  8. ############################################################################
  9.  
  10. ############################
  11. #  Read all the hmp files
  12. ############################
  13.  
  14. ($ARGV[0] =~ /\.hmp/i) || die "I need at least one hmp file.";
  15.  
  16. while ($ARGV[0] =~ /\.hmp/i) {
  17.   open(IN, $ARGV[0]);
  18.   while(<IN>) {
  19.     @charNumbers=split(/\s+/);
  20.     foreach (@charNumbers) {
  21.       if (/(\d+)\-(\d+)/) {
  22.         for $i ($1..$2) {
  23.           $fontSym{$i}++;
  24.         }
  25.       }
  26.       else {
  27.         $fontSym{$_}++;
  28.       }
  29.     }
  30.   }
  31.   close(IN);
  32.   shift;
  33. }
  34.  
  35. ############################################################################
  36. #  Now read through the font files and write to the output only those
  37. #  letters for which we have an associative array value defined
  38. ############################################################################
  39. $line='';
  40. while(<ARGV>) {
  41.   chop;
  42.   if ( (($symNum, $numStrokes) = /(.....)(...)/)
  43.     && ($numStrokes=~ /^\s*\d+$/) && ($symNum=~ /^\s*(\d+)$/)) {
  44.     print "$line\n" if defined $fontSym{$lineSymNum};
  45.     $line='';
  46.     $lineSymNum=$1;
  47.   }
  48.   $line .= $_;
  49. }
  50.  
  51.